package com.bw.lib_net.test_retrofit

import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.lang.reflect.InvocationHandler
import java.lang.reflect.Method
import java.lang.reflect.Proxy

/**
 * @author ytx
 * @date 2025-09-17 09:01
 * @description
 */
class TestRetrofit {

    fun test(){
        val apiService = Proxy.newProxyInstance(ApiService::class.java.classLoader,
                                arrayOf(ApiService::class.java),
                                object : InvocationHandler{
                                    override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any? {
                                        //通过反射获得方法上的注解：get、post请求
                                        //通过反射获得方法参数的注解：@Field、@Part、@PartMap、@Query、@Body   args：传入的参数

                                        //构建Okhttp的request对象发起网络请求


                                        return method?.invoke(proxy,args)
                                    }
                                }
        ) as ApiService

        //调用接口方法
        apiService.getData()
    }

    fun test2(){
        val apiService = Retrofit.Builder()
            .baseUrl("https://www.wanandroid.com/")
//            .addCallAdapterFactory(CoroutineCallAdapterFactory())
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(ApiService::class.java)

        apiService.getData()
    }
}